在 AI 影像處理的世界中,物件追蹤技術扮演著至關重要的角色。像是在過去幾天所探討的皆是圖像的合成。但如果想要將海報貼上影片呢?勢必需要去追蹤物品來去判斷海報之位置是否需要重新合成!在今天,將帶你來直接上手 YOLO V8 的物件軌跡追蹤技術!
YOLO (You Only Look Once) 是一種實時物件檢測系統,而 V8 是其最新版本。它在速度和準確性方面都有顯著改進,使其成為物件追蹤任務的理想選擇。
首先先來做個測試吧!這邊透過圖片的方式去試試看
要使用 YOLO V8 的話需要使用 ultralytics 提供的套件
你可以直接透過 pip
的方式去安裝!
pip install ultralytics
接著只需要 Import 套件並用套件寫好的 code 去進行就可以了!
from ultralytics import YOLO
def main():
# Load the YOLO model
model = YOLO('model/yolov8n.pt')
# Run detection on the image
results = model(source="test_img/test_1.png", show=True, conf=0.4, save=True)
if __name__ == "__main__":
main()
其中這邊要注意,記得下載想要使用的 YOLO v8 模型至檔案中,這邊的model/yolov8n.pt
只是我的路徑,並不適用於所有人!來看看結果吧~首先是原圖!
接著是辨識後的結果圖。
可以看到光是這樣的結果就很讚了!
現在我們已經成功地在靜態圖像上使用了 YOLO V8 進行物件檢測。接下來,讓我們將這個技術應用到影片上,實現動態物件追蹤。
首先,我們需要稍微修改一下我們的程式:
import os
os.environ['KMP_DUPLICATE_LIB_OK'] = 'TRUE'
from ultralytics import YOLO
def main():
# 載入YOLO模型
model = YOLO('model/yolov8n.pt')
# 在影片上運行追蹤
results = model.track(source="test_img/p_fo_video.mp4", save=True, tracker="bytetrack.yaml", stream=True)
for r in results:
# 這裡可以添加代碼來處理每一幀的結果
# 例如,你可以print出每一幀檢測到的物件數量
print(f"Detected {len(r.boxes)} objects in this frame")
if __name__ == "__main__":
main()
如有任何問題歡迎在下方留言提問!